As is known, a web browser communicates with a server. The web browser may submit a request to a server for a web page, information or application. The server serves a response to the browser. Thus, in a basic web page request/response arrangement, a browser sends a request to a web server and in exchange receives a web page. Each new request results in a new web page. Unfortunately, oftentimes 80-90% of end-user response time is spent downloading all the components in a web page.
Typical conventional web applications display output content via a screen output page file such as a Java Server Page (JSP). Such an application contains a JSP for each web page in the application, and stores each JSP in a separate file. An application may contain many JSP files corresponding to each screen. A typical JSP contains many lines of HTML code for displaying, or rendering screen output.
The web page can further operate with, for example, JavaScript. When using JavaScript, a new request may be made to the server. In this case, rather than a new web page, new data is provided in response. The data is presented in the same web page, i.e., the content of the web page may change. In other words, the web page is not reloaded on the user's system. These types of requests are commonly termed “Ajax” requests. Using Ajax components on a web page improves many aspects of web page performance, but web page performance can still be perceived as slow as the pages load resources over a network and as a page is rendered by a browser.
jMaki, is a client/server framework for creating Ajax applications and markups and provides many rich features for jMaki's web pages used to rapidly create Ajax applications but these applications can exacerbate performance issues. To fully support Ajax applications, jMaki includes many Cascading Style Sheet (CSS) and JavaScript resources which can increase the number of Hyper Text Transfer Protocol (HTTP) requests and slow down the initial load of a page, slowing network performance. In addition, in a traditional web page, JavaScript or CSS code may exist in several files. Thus, in the code for a web page, a reference to each of those several files exists. As a result, in translating the code, each time the browser encounters that JavaScript or CSS reference, it goes to the appropriate file and retrieves the code. Further, the contents of CSS and JavaScript can be large and require a lot of bandwidth to transfer to a client. Moreover, subsequent calls from a browser for resources can often result in the resources being re-sent to the browser.
As is known, an Internet browser operates and accomplishes tasks in a particular order. For example, when a browser encounters coding such as JavaScript, it stops everything else and loads the JavaScript. Further, using Ajax components in a web page can slow the performance of a web page as it loads resources over the network and as a page is rendered by the browser. Page rendering in many if not all modern browsers will also stop as JavaScript and CSS resources are loaded over a network, causing a page or pages to render slower. While some of this slowness may be perceived slowness by an end user, it can often lead to frustration of the user.
To date, the only available solution for solving these issues is written guidelines and recommendations which must be employed by a skilled programmer in order to improve performance. Moreover, each guideline or recommendation is applied individually; in other words they are not all applied at once. Web application development typically employs specialized toolkits, applications and languages. Efficient development of conventional web applications suggests extensive and thorough knowledge of web page delivery technologies such as HTML, XML, JavaScript, Java, CSS Servlets, JSPs and others. To this end, the developer must be familiar with the guidelines and procedures, as well as how the web server and web applications work. The developer must then be able to apply the guidelines and recommendations on a case by case basis in a manner that generates the appropriate result.
Accordingly, a server based framework is provided to improve both network performance and browser loading of Ajax based applications.